﻿#define  _CRT_SECURE_NO_WARNINGS 1
//1. 使用程序打印九九乘法表
//样例输出 :
//1 * 1 = 1
//1 * 2 = 2  2 * 2 = 4
//1 * 3 = 3  2 * 3 = 6  3 * 3 = 9
//int main()
//{
//	for (int i = 1; i <= 9; i++) //外层循环控制乘法表行数 
//	{
//		for (int j = 1; j <= i; j++) //内层循环控制每行的列数
//		{
//			printf("%d * %d = %d", i, j, i * j);
//			if (j < i)  //判断是否为行内最后一个表达式，不是则打印空格分隔
//			{
//				printf("  ");
//			}
//		}
//		//每行打印完成之后换行
//		printf("\n");
//	}
//	return 0;
//}


//2.设计一个程序, 输入 N, 输出 0~N 之间的所有素数
//(0 < N < MAX_INT)
//	样例输入:
//100
//样例输出 :
//	2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
#include <stdio.h>
//int main()
//{
//	int i = 0;
//	int N = 0;
//	printf("请输入一个正整数N（0 < N <MAX_INT):");
//	scanf("%d", &N); //输入这个数
//	for (i = 2; i <= N; i++) //打印出1到N的所有数
//	{
//		int flag = 1;   //假设这个数是素数
//		int j = 0;
//		for (j = 2; j < i - 1; j++) //打印出2到i-1的数去试，看能否整除
//		{
//			if (i % j == 0)  //这个数就不是素数
//			{
//				flag = 0;
//				break;
//			}
//		}
//			if(flag == 1)  //若是素数  flag=1 则把这个数打印出来
//				printf("%d ", i);
//		
//	}
//	return 0;
//}




//3. 打印菱形
//输入菱形的边长 n, 打印一个对应大小的菱形
//(1 < n < 100)
//样例输入:5
//样例输出 : 边长为5的菱形（图形用*号）
int main()
{
	int n = 0;
	printf("请输入菱形的边长n（1 < n < 100）: ");
	scanf("%d", &n);

	//打印上半部分（包括中间行）
	// i控制行数，从1到n
	for (int i = 1; i <= n; i++)
	{
		//打印每行前面的空格，用于控制菱形的缩进
		//随着行数i的增大，空格数减少，让星号逐渐向右移动
		for (int j = 1; j <= n - i; j++)
		{
			printf(" ");
		}
		//打印每行的星号部分
		//星号数量的规律是：2 *i -1个  第一行1个 第二行3个
		for (int k = 1; k <= 2 * i - 1; k++)
		{
			printf("*");
		}
		//每行星号打印完换行
		printf("\n");
	}

	//打印下半部分（中间行以下）
	//i控制行数 从n-1到1
	for (int i = n - 1 ; i >= 1; i--)
	{
		//打印每行前面的空格，规律和上半部分对称
		for (int j = 1; j <= n - i; j++)
		{
			printf(" ");
		}
		//打印每行的星号部分，规律和上半部分对称
		for (int k = 1; k <= 2 * i - 1; k++)
		{
			printf("*");
		}
		//每行打印星号完之后换行
		printf("\n");
	}
	return 0;
}